const express = require('express');
const router = express.Router();
const validator = require('validator');
const User = require('../models/users');
const getJSONData = require('../utils/json.js');

/**
 * @description 查询用户列表
*/
router.get('/list', function(request, response, next) {
  User.find((err, res) => {
    if (!err) {
      // 操作成功
      response.json(getJSONData(200, res, '查询用户信息成功', ''));
    } else {
      // 操作失败
      response.json(getJSONData(201, '', '查询用户信息失败', err));
    }
  });
});

/**
 * @description 查询单个用户信息
 * @augments id 用户ID
*/
router.get('/user/:id', function(request, response, next) {
  // 获取用户ID
  let id = request.params.id; // 地址栏的ID
  let userId = request.query.id; // 传递参数的ID
  if (id !== userId) { // 判断两次ID是否一致
    response.json(getJSONData(201, '', '查询的用户ID为不正确', ''));
  }
  // 查询用户信息操作
  User.findById(id, (err, res) => {
    if (!err) {
      response.json(getJSONData(200, res, '查询用户信息成功', ''));
    } else {
      response.json(getJSONData(201, '', '查询用户信息失败', err));
    }
  });
});

/**
 * @description 添加新用户信息
 * @augments account 用户帐号
 * @augments password 帐号密码
 * @augments role 权限
 * @augments name 联系人
 * @augments phone 联系人电话
 * @augments company 公司名称
 * @augments address 公司地址
*/
router.post('/user', function(request, response, next) {
  // 账号信息
  let account = request.body.account;
  // 密码信息
  let password = request.body.password;
  // 权限信息
  let role = request.body.role | 0;
  // 联系人姓名
  let name = request.body.name;
  // 联系人电话
  let phone = request.body.phone;
  // 公司名称
  let company = request.body.company;
  // 公司地址
  let address = request.body.address;

  // 封装User Schema
  const user = new User({ account, password, role, name, phone, company, address });
  // 保存操作
  user.save((err, res) => {
    if (!err) {
      response.json(getJSONData(200, res, '添加用户信息成功', ''));
    } else {
      response.json(getJSONData(201, '', '添加用户信息失败', err));
    }
  });
});

/**
 * @description 修改用户信息成功
 * @augments id 用户ID
*/
router.post('/user/:id', function(request, response, next) {
  // 获取用户ID
  let id = request.params.id; // 地址栏的ID
  // let userId = request.body.id; // 传递参数的ID
  // if (id !== userId) { // 判断两次ID是否一致
  //   response.json(getJSONData(201, '', '用户ID不正确！', ''));
  // }
  // 账号信息
  let account = request.body.account;
  // 密码信息
  let password = request.body.password;
  // 权限信息
  let role = request.body.role | 0;
  // 联系人姓名
  let name = request.body.name;
  // 联系人电话
  let phone = request.body.phone;
  // 公司名称
  let company = request.body.company;
  // 公司地址
  let address = request.body.address;

  // 封装User Schema
  const user = {
    account,
    password,
    role,
    name,
    phone,
    company,
    address
  };

  // 更新操作
  User.findByIdAndUpdate(id, user, (err, res) => {
    if (!err) {
      response.json(getJSONData(200, res, '更新用户信息成功', ''));
    } else {
      response.json(getJSONData(201, '', '更新用户信息失败', err));
    }
  });
});

/**
 * @description 删除用户信息
 * @augments id 用户ID
*/
router.get('/user/delete/:id', function(request, response, next) {
  // 获取用户ID
  let id = request.params.id; // 地址栏的ID
  let userId = request.query.id; // 传递参数的ID
  if (id !== userId) { // 判断两次ID是否一致
    response.json(getJSONData(201, '', '用户ID不正确！', ''));
  }
  // 删除操作
  User.findByIdAndRemove({_id: id}, (err, res) => {
    if (!err) {
      if (res) {
        response.json(getJSONData(200, res, '删除用户信息成功', ''));
      } else {
        response.json(getJSONData(201, '', '该用户已被删除！', err));
      }
      
    } else {
      response.json(getJSONData(201, '', '删除用户信息失败', err));
    }
  });
});

/**
 * @description 用户登录
 * @username 用户名
 * @password 登录密钥
*/
router.get('/login', function(request, response, next) {
  let account = request.query.username;
  let password = request.query.password;
  User.findOne({ 'account': account, 'password': password },(err, res) => {
    if (!err) {
      if (res) {
        response.json(getJSONData(200, res, '用户登录成功', ''));
      } else {
        response.json(getJSONData(201, '', '用户登录失败', err));
      }
    } else {
      response.json(getJSONData(201, '', '用户登录失败', err));
    }
  });
});

module.exports = router;
